type: object
properties:
  ingressClass:
    description: |
      Класс Ingress-контроллера, который используется для dashboard.

      Опциональный параметр, по умолчанию используется глобальное значение `modules.ingressClass`.
  auth:
    description: |
      Опции, связанные с аутентификацией или авторизацией в приложении.
    properties:
      externalAuthentication:
        description: |
          Параметры для подключения внешней аутентификации (используется механизм NGINX Ingress [external-auth](https://kubernetes.github.io/ingress-nginx/examples/auth/external-auth/), работающий на основе модуля Nginx [auth_request](http://nginx.org/en/docs/http/ngx_http_auth_request_module.html).

          > Внешняя аутентификация включается автоматически, если включен модуль [user-authn](https://deckhouse.io/documentation/v1/modules/150-user-authn/).
        properties:
          authURL:
            description: |
              URL сервиса аутентификации. Если пользователь прошел аутентификацию, сервис должен возвращать код ответа HTTP 200.
          authSignInURL:
            description: |
              URL, куда будет перенаправлен пользователь для прохождения аутентификации (если сервис аутентификации вернул код ответа HTTP, отличный от 200).
          useBearerTokens:
            description: |
              Токены авторизации. dashboard должен работать с Kubernetes API от имени пользователя (сервис аутентификации при этом должен обязательно возвращать в своих ответах HTTP-заголовок Authorization, в котором должен быть bearer-token — именно под этим токеном dashboard будет производить запросы к API-серверу Kubernetes).

              * Значение по умолчанию: `false`.

              > **Важно!** Из соображений безопасности этот режим работает только если `https.mode` (глобальный или в модуле) не установлен в значение `Disabled`.
      whitelistSourceRanges:
        description: |
          Массив адресов в формате CIDR, которым разрешено проходить аутентификацию для доступа в dashboard.
      allowScale:
        description: |
          Активация возможности скейлить Deployment и StatefulSet из веб-интерфейса.

          Не используется, если включен параметр `externalAuthentication`.
  https:
    description: |
      Тип сертификата, используемого для dashboard.

      Этот параметр переопределяет глобальные настройки `global.modules.https`.
    properties:
      mode:
        description: |
          Режим работы HTTPS:
          * `CertManager` — dashboard будет работать по HTTPS и заказывать сертификат с помощью ClusterIssuer, заданного в параметре `certManager.clusterIssuerName`;
          * `CustomCertificate` — dashboard будет работать по HTTPS, используя сертификат из пространства имен `d8-system`;
          * `Disabled` — в данном режиме dashboard будет работать только по HTTP;
          * `OnlyInURI` — dashboard будет работать по HTTP (подразумевая, что перед ними стоит внешний HTTPS-балансировщик, который терминирует HTTPS) и се ссылки в [user-authn](https://deckhouse.ru/documentation/v1/modules/150-user-authn/) будут генерироваться с HTTPS-схемой. Балансировщик должен обеспечивать перенаправление с HTTP на HTTPS.
      certManager:
        properties:
          clusterIssuerName:
            description: |
              Тип используемого ClusterIssuer. В данный момент доступны `letsencrypt`, `letsencrypt-staging`, `selfsigned`, но вы можете определить свои.

            x-doc-default: "letsencrypt"
      customCertificate:
        properties:
          secretName:
            description: |
              Имя Secret'а в пространстве имен `d8-system`, который будет использоваться для dashboard (данный Secret должен быть в формате [kubernetes.io/tls](https://kubernetes.github.io/ingress-nginx/user-guide/tls/#tls-secrets)).
            x-doc-default: 'false'
  highAvailability:
    description: |
      Ручное управление режимом отказоустойчивости.

      По умолчанию режим отказоустойчивости определяется автоматически. [Подробнее](../../deckhouse-configure-global.html#параметры) про режим отказоустойчивости.
  nodeSelector:
    description: |
      Аналогично параметру Kubernetes `spec.nodeSelector` у подов.

      Если ничего не указано или указано `false`, будет [использоваться автоматика](../../#выделение-узлов-под-определенный-вид-нагрузки).
  tolerations:
    description: |
      Аналогично параметру Kubernetes `spec.tolerations` у подов.

      Если ничего не указано или указано `false`, будет [использоваться автоматика](../../#выделение-узлов-под-определенный-вид-нагрузки).

  accessLevel:
    description: |
      Уровень доступа в dashboard, если отключен модуль `user-authn` и не включена внешняя аутентификация (`externalAuthentication`). Возможные значения описаны [в user-authz](../../modules/140-user-authz/).

      По умолчанию используется уровень `User`.

      В случае использования модуля `user-authn` или другой внешней аутентификации (`externalAuthentication`) права доступа необходимо настраивать с помощью модуля `user-authz`.
